<?php

    // +----------------------------------------------------------------------
    // | 请求缓存管理控制器
    // +----------------------------------------------------------------------
    // | Copyright (c) 2015-2024 http://www.yicmf.com, All rights reserved.
    // +----------------------------------------------------------------------
    // | Author: 微尘 <yicmf@qq.com>
    // +----------------------------------------------------------------------

    namespace app\controller\cms\admin;

    use app\model\cms\Request as RequestModel;
    use yicmf\builder\Edit;
    use yicmf\builder\Table;
    use app\controller\admin\Common;
    use app\model\admin\Module;
    use think\facade\Url;

    class Request extends Common
    {

        protected function initialize()
        {
            parent::initialize();
        }

        public function _filter()
        {
        	return [];
        }

        public function index()
        {
            // 显示页面
            $builder = new Table();
            $builder->model(RequestModel::class)
				->where($this->_filter())
				->setSearchPostUrl('', '')
                ->suggest('该功能开发中，现阶段可以在模块下route.php修改')
                ->searchText('name', '名称', '名称')
                ->buttonUpdate(url('cms/admin/Request/update'))
                ->keyId('id', '编号', 'desc')
                ->keyText('name', '名称')
                ->keyText('module', '模块')
                ->keyBool('is_html', '生成静态')
                ->keyText('rule', 'URL规则')
                ->keyText('example', 'URL实例')
                ->keyStatus()
                ->actionUpdate('update?id={$id}')
                ->actionDelete('del?id={$id}');

            return $builder->fetch();
        }

        /**
         * 修改请求缓存
         * @author 微尘 <yicmf@qq.com>
         */
        public function update()
        {
            if ( $this->request->isPost() ) {
                if ( $this->model->updateData($this->request->post()) !== false ) {
                    $this->_returnSuccess( ($this->request->post('id') ? '更新' : '添加') . '请求缓存操作成功', true);
                } else {
                    $this->_returnError( ($this->request->post('id') ? '更新' : '添加') . '请求缓存操作失败，失败信息【' . $this->model->getError() . '】');
                }
            } else {
                $id = $this->request->get('id');
                // 判断是否为编辑模式
                $isEdit = $id ? true : false;
                if ( $isEdit ) {
                    $data = $this->model->get($id);
                } else {
                    $data = [];
                }
                $builder = new Edit();
                $builder->title($isEdit ? '编辑请求缓存' : '添加请求缓存')
                    ->keyText('name', '请求缓存', '请求缓存名称，方便记忆')
                    ->keySelect('module', '模块名称', Module::getAll(), '不填表示所有模块')
                    ->keyBool('is_relation', '是否关联规则', '非关联规则直接注册缓存')
                    ->keyBool('is_html', '是否生成静态', '开启生成静态页面不再支持有效时间')
                    ->keyText('cache_expire', '缓存时间', '页面缓存有效时间，单位小时。')
                    ->keyTextArea('rule', 'URL规则', '参考下面参数说明')
                    ->keyText('route', '指定控制器方法', '例如：Demo/action')
                    ->keyText('example', 'URL示例', '填写一个规则范例')
                    ->keyTextArea('remark', '备注')
                    ->explain('缓存时间高级用法，<code>+1 week</code>为一周，<code>+1 month 2 week 2 days 5 seconds</code>为1月2周2天5秒。')
                    ->explain('URL规则参数：当前发布年、月、周、天、小时<code>{$year}{$month}{$week}{$day}{$hour}</code>')
                    ->explain('URL内容规则参数：文档id<code>{$id}</code>文档名字<code>{$name}</code>栏目名字<code>{$category_name}</code>')
                    ->explain('分类URL规则参数：分类id<code>{$id}</code>分类名字<code>{$name}</code>')
                    ->explain('非关联规则会自动注册路由及缓存')
                    ->explain('指定控制器方法需要注意大小写')
                    ->explain('开启静态缓存，路由必须以<code>html/</code>开头')
                    ->data($data)
                    ->buttonSubmit('', '保存')
                    ->buttonClose();

                return $builder->fetch();
            }
        }

    }
